#!/bin/bash
# Docker清理脚本

set -e  # 遇到错误立即退出

echo "🧹 Docker系统清理工具..."
echo ""

# 容器和镜像配置
CONTAINER_NAME="edge-cloud-ai"
IMAGE_NAME="localhost/edge-cloud-ai"

# 检查Docker是否运行
if ! docker info >/dev/null 2>&1; then
    echo "❌ Docker未运行或无法访问，请检查Docker服务状态"
    exit 1
fi

# 显示清理选项
echo "请选择清理操作:"
echo "1) 停止并删除容器"
echo "2) 删除镜像"
echo "3) 清理构建缓存"
echo "4) 清理所有未使用的资源"
echo "5) 清理数据卷目录"
echo "6) 完全清理 (包含以上所有)"
echo "0) 退出"
echo ""

read -p "请输入选项 (0-6): " -n 1 -r
echo
echo ""

case $REPLY in
    1)
        echo "🛑 停止并删除容器..."
        if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
            docker stop "${CONTAINER_NAME}" 2>/dev/null || true
            docker rm "${CONTAINER_NAME}" 2>/dev/null || true
            echo "✅ 容器已删除"
        else
            echo "⚠️  容器不存在"
        fi
        ;;
    2)
        echo "🗑️  删除镜像..."
        if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "${IMAGE_NAME}"; then
            docker rmi $(docker images "${IMAGE_NAME}" -q) 2>/dev/null || true
            echo "✅ 镜像已删除"
        else
            echo "⚠️  镜像不存在"
        fi
        ;;
    3)
        echo "🧹 清理构建缓存..."
        docker builder prune -f
        echo "✅ 构建缓存已清理"
        ;;
    4)
        echo "🧹 清理未使用的Docker资源..."
        docker system prune -f
        echo "✅ 未使用资源已清理"
        ;;
    5)
        echo "🗑️  清理数据卷目录..."
        DATA_DIR="${PWD}/../docker-data"
        if [ -d "${DATA_DIR}" ]; then
            read -p "确认删除数据目录 ${DATA_DIR}? (y/N): " -n 1 -r
            echo
            if [[ $REPLY =~ ^[Yy]$ ]]; then
                rm -rf "${DATA_DIR}"
                echo "✅ 数据目录已删除"
            else
                echo "⏭️  跳过数据目录删除"
            fi
        else
            echo "⚠️  数据目录不存在"
        fi
        ;;
    6)
        echo "🧹 执行完全清理..."
        
        # 停止并删除容器
        if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
            echo "  - 停止并删除容器..."
            docker stop "${CONTAINER_NAME}" 2>/dev/null || true
            docker rm "${CONTAINER_NAME}" 2>/dev/null || true
        fi
        
        # 删除镜像
        if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "${IMAGE_NAME}"; then
            echo "  - 删除镜像..."
            docker rmi $(docker images "${IMAGE_NAME}" -q) 2>/dev/null || true
        fi
        
        # 清理缓存和未使用资源
        echo "  - 清理构建缓存..."
        docker builder prune -f
        echo "  - 清理未使用资源..."
        docker system prune -f
        
        # 清理数据目录
        DATA_DIR="${PWD}/../docker-data"
        if [ -d "${DATA_DIR}" ]; then
            echo "  - 清理数据目录..."
            read -p "确认删除数据目录 ${DATA_DIR}? (y/N): " -n 1 -r
            echo
            if [[ $REPLY =~ ^[Yy]$ ]]; then
                rm -rf "${DATA_DIR}"
                echo "  ✅ 数据目录已删除"
            else
                echo "  ⏭️  跳过数据目录删除"
            fi
        fi
        
        echo "✅ 完全清理完成"
        ;;
    0)
        echo "👋 退出清理"
        exit 0
        ;;
    *)
        echo "❌ 无效选项"
        exit 1
        ;;
esac

echo ""
echo "🔧 其他管理命令:"
echo "  - 查看镜像: docker images"
echo "  - 查看容器: docker ps -a"
echo "  - 查看系统信息: docker system df" 